package org.fuys.etp.core.model.vo;

import lombok.Builder;
import lombok.Data;

/**
 * @projectName: fuys-etp
 * @package: org.fuys.etp.core.model.vo
 * @className: TpDynamicConfigVO
 * @author: WangJing
 * @description: TODO
 * @date: 2025/2/6 15:40
 * @version: 1.0
 */
@Data
@Builder
public class TpDynamicConfigVO {
    private Integer dynamicVersion;

    /**
     * 最大核心线程数改变步长 为空时不限制
     */
    private Integer maxCoreThreadStep;

    /**
     * 最大最大线程数改变步长 为空时不限制
     */
    private Integer maxMaxThreadStep;

    /**
     * 最大队列大小改变步长 为空时不限制
     */
    private Integer maxQueueSizeStep;

    /**
     * 窗口内任务变化趋势 单位为比值 当任务预测增长此大小 如增长百分之20 则进行配置变化
     */
    private Double windowsChangeTrend;

    /**
     * PID算法KP参数
     */
    private Double pidKp;

    /**
     * PID算法KI参数
     */
    private Double pidKi;

    /**
     * PID算法KD参数
     */
    private Double pidKd;

    /**
     * 队列期待目标占用率
     */
    private Double pidTarget;

    /**
     * 基础配置版本号
     */
    private Integer baseConfigVersion;

    /**
     * 负载等级
     */
    private Integer loadLevel;

    /**
     * 滑动窗口大小
     */
    private Integer windowsSize;

    /**
     * 滑动窗口启动阈值
     */
    private Integer windowMinSize;

    /**
     * 滑动窗口加权算法权重
     */
    private double[] windowWeights;
}
